#ifndef FACHADABD_H
#define FACHADABD_H

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <iostream>
#include <QVariant>
#include <QString>
#include <QStringList>
#include <QtGui/QMessageBox>
#include <QVector>
#include <QDebug>

class FachadaBD
{
	public:

		FachadaBD();
		virtual ~FachadaBD();

		void crearConexion();
		QVector<QString> validarUsuario(QString login, QString contrasena);
		QStringList cargarRoles();
		bool crearUsuario(QString nombre,QString cedula,QString login,QString rol,QString estado);

		QVector<QString> consultarUsuario(QString id,QString cedula,QString login);

		bool modificarUsuario(QString id, QString nombre, QString cedula, QString login, QString rol, QString estado);

		bool registrarIncidente(QString descripcion, QString prioridad, QString persona);


		bool crearEstado(QString nombre);
		QVector<QString> consultarEstado(QString id,QString nombre);
		bool modificarEstado(QString id, QString nombre);
		bool eliminarEstado(QString id, QString nombre);

		QStringList cargarPersonasPrimerEstado();

		QStringList cargarEstados();

		bool crearRelacion(QString estDominante, QString estDominado);
		QString consultarRelacion(QString estDominante, QString estDominado);
		bool eliminarRelacion(QString estDominante, QString estDominado);

		bool crearEstPorRol(QString rol, QString estado);
		QString consultarEstPorRol(QString rol, QString estado);
		bool eliminarEstPorRol(QString rol, QString estado);
		
		QVector<QVector <QString> > cargarIncidentes(QString idUsuario);

		bool cargarDocumentacion(QString idIncidente, QString documento);

		QStringList nuevosEstados(QString estadoActual);

		QStringList nuevosUsuarios(QString estadoActual);

		bool asignarIncidente(QString incidente, QString estado, QString usuario);

		QString usuario(QString incidente);

		void registrarHistorial(QString usuario, QString comentario, QString idIncidente);

		QStringList verUsuarios();

		QVector<QVector <QString> > cargarHistorial(QString usuario);


		bool cambiarContrasena(QString login, QString contrasenaA, QString contrasenaN);
};
#endif
